import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { LoginUsers, Users } from './data/user';
import { LoginAdmins } from './data/admin';
import { Rooms} from './data/room';
let _Users = Users;
let _Rooms = Rooms;

export default {
  /**
   * mock bootstrap
   */
  bootstrap() {
      let mock = new MockAdapter(axios);

      // mock success request
      mock.onGet('/success').reply(200, {
          msg: 'success'
      });

      // mock error request
      mock.onGet('/error').reply(500, {
          msg: 'failure'
      });

      //登录
      mock.onPost('/login').reply(config => {

          let { role, name, password } = JSON.parse(config.data);

          if( role == "用户" ){
              return new Promise((resolve, reject) => {
                  let user = null;
                  setTimeout(() => {
                      let hasUser = LoginUsers.some(u => {
                          if (u.name === name && u.password === password) {
                              user = JSON.parse(JSON.stringify(u));
                              user.password = undefined;
                              return true;
                          }
                      });

                      if (hasUser) {
                          resolve([200, {code: 200, msg: '请求成功', user}]);
                      } else {
                          resolve([200, {code: 500, msg: '账号或密码错误'}]);
                      }
                  }, 1000);
              });
          }
          if( role == "管理员" ){
              return new Promise((resolve, reject) => {
                  let admin = null;
                  setTimeout(() => {
                      let hasAdmin = LoginAdmins.some(u => {
                          if (u.name === name && u.password === password) {
                              // alert("匹配成功");
                              admin = JSON.parse(JSON.stringify(u));
                              // console.log(admin);
                              admin.password = undefined;
                              // console.log(admin.password);
                              return true;
                          }
                      });
                      // alert("hasAdmin: "+ hasAdmin);
                      if (hasAdmin) {
                          resolve([200, {code: 200, msg: '请求成功', admin}]);
                          console.log(admin);
                      } else {
                          resolve([200, {code: 500, msg: '账号或密码错误'}]);
                      }
                  }, 1000);
              });
          }
      });

      //获取用户列表
      mock.onGet('/user/list').reply(config => {
          let {name} = config.params;
          let mockUsers = _Users.filter(user => {
              if (name && user.name.indexOf(name) == -1) return false;
              return true;
          });
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      users: mockUsers
                  }]);
              }, 1000);
          });
      });

      //获取用户列表（分页）
      mock.onGet('/user/listpage').reply(config => {
          let {page, name} = config.params;
          let mockUsers = _Users.filter(user => {
              if (name && user.name.indexOf(name) == -1) return false;
              return true;
          });
          let total = mockUsers.length;
          mockUsers = mockUsers.filter((u, index) => index < 20 * page && index >= 20 * (page - 1));
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      total: total,
                      users: mockUsers
                  }]);
              }, 1000);
          });
      });

      //删除用户
      mock.onGet('/user/remove').reply(config => {
          let {id} = config.params;
          _Users = _Users.filter(u => u.id !== id);
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      code: 200,
                      msg: '删除成功'
                  }]);
              }, 500);
          });
      });

      //批量删除用户
      mock.onGet('/user/batchremove').reply(config => {
          let {ids} = config.params;
          ids = ids.split(',');
          _Users = _Users.filter(u => !ids.includes(u.id));
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      code: 200,
                      msg: '删除成功'
                  }]);
              }, 500);
          });
      });

      //编辑用户
      mock.onGet('/user/edit').reply(config => {
          let {id, name, addr, age, birth, sex} = config.params;
          _Users.some(u => {
              if (u.id === id) {
                  u.name = name;
                  u.addr = addr;
                  u.age = age;
                  u.birth = birth;
                  u.sex = sex;
                  return true;
              }
          });
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      code: 200,
                      msg: '编辑成功'
                  }]);
              }, 500);
          });
      });

      //新增用户
      mock.onGet('/user/add').reply(config => {
          let {name, addr, age, birth, sex} = config.params;
          _Users.push({
              name: name,
              addr: addr,
              age: age,
              birth: birth,
              sex: sex
          });
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      code: 200,
                      msg: '新增成功'
                  }]);
              }, 500);
          });
      });


      //获取会议室列表
      mock.onGet('/room/list').reply(config => {
          let {name} = config.params;
          let mockRooms = _Rooms.filter(room => {
              if (name && room.room_name.indexOf(name) == -1) return false;
              return true;
          });
          // let {room_id,room_name, room_status,room_contain} = JSON.parse(config.data);
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      rooms: mockRooms
                  }]);
              }, 1000);
          });
      });

      //获取会议室列表（分页）
      mock.onGet('/room/listpage').reply(config => {
          let {page, room_name} = config.params;
          let mockRooms = _Rooms.filter(room => {
              if (room_name && room.room_name.indexOf(room_name) == -1) return false;
              return true;
          });
          let total = mockRooms.length;
          mockRooms = mockRooms.filter((u, index) => index < 20 * page && index >= 20 * (page - 1));
          return new Promise((resolve, reject) => {
              setTimeout(() => {
                  resolve([200, {
                      total: total,
                      rooms: mockRooms
                  }]);
              }, 1000);
          });



      })
  }
};